﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WhiteFox.DAlessio.Agenda.Domain.Model;
using WhiteFox.DAlessio.Agenda.View.Controllers;
using WhiteFox.DAlessio.Patterns.Repository;
using WhiteFox.DAlessio.Patterns.UI.MVC;

namespace WhiteFox.DAlessio.Agenda.View
{
    public partial class frmCadastrarTelefone : frmCadastrarTelefoneView, IView
    {
        Contato _contato = null;

        int _telefoneID = 0;

        public frmCadastrarTelefone(Contato contato, int telefoneID, bool forceLoad)
        {
            InitializeComponent();

            _contato = contato;

            _telefoneID = telefoneID;

            InitData(forceLoad);
            
            txtNumero.Focus();
        }
        
        public frmCadastrarTelefone(Contato contato)
        {
            InitializeComponent();

            _contato = contato;

            txtNumero.Focus();
        }


        private void btnOK_Click(object sender, EventArgs e)
        {
            var telefone = new Telefone() { Numero = txtNumero.Text, Contato_Id = _contato.Id };
            Controller.Domain.Repository.Save(telefone);

            MessageBox.Show("Telefone cadastrado com sucesso!");
            
            Controller.RaiseModelChange(sender, new ModelChangeEventArgs(true));

            txtNumero.ResetText();

            this.Close();


        }

        public void ModelChange(object sender, ModelChangeEventArgs e)
        {
            InitData(e.ForceChange);
        }

        public void InitData(bool isForceLoad)
        {
            if (isForceLoad)
                txtNumero.Text = _contato.Telefones.Single(x => x.Id == _telefoneID).Numero;
        }
    }

    //Classe necessária para que o Form seja visualizado em modo Designer (o modo Designer não consegue renderizar o Form em classes com herança genérica)
    public class frmCadastrarTelefoneView : ViewBase<TelefoneControler> { }   

}
